#include<stdio.h>
#include<string.h>
#include<stdlib.h>

/*
	name= chengaj, age=28, sex=Male
 *
 *
 */

struct student {
	char name[16];
	int age;
	char sex[16];
};

int main(){

	size_t ret;

	//打开文件
	FILE * fp = fopen("1.bin", "w");
	if(fp == NULL){
		perror("fopen");
		return 0;
	}

	//构造写入对象
	struct student stu[2];
	
	strcpy(stu[0].name, "chengaj");
	stu[0].age = 28;
	strcpy(stu[0].sex, "Male");
	
	strcpy(stu[1].name, "CJ");
	stu[1].age = 29;
	strcpy(stu[1].sex, "FeMale");

	//往文件写入对象
	ret = fwrite(stu, sizeof(struct student), 2, fp);
	if(ret == -1){
		perror("fwrite");
		fclose(fp);
		return 0;
	}

	//关闭文件
	fclose(fp);

	//重新打开文件,执行文件读取操作.
	//在不重新打开文件，共用一个文件指针fp的情况下,读取的数据不是我们想要的（因为使用fread时，指针指向的是文件尾，而不是文件头）。
	
	//打开文件
	FILE * fp1 = fopen("1.bin", "r");
	if(fp1 == NULL){
		perror("fopen");
		return 0;
	}

	//构造写入对象
	struct student stu2[2];

	//从文件读取对象
	ret = fread(stu2, sizeof(struct student), 2, fp1);
	if(ret == -1){
		perror("fwrite");
		fclose(fp1);
		return 0;
	}

	//打印对象
	printf("name= %s, age=%d, sex=%s\n", stu2[0].name, stu2[0].age, stu2[0].sex);
	printf("name= %s, age=%d, sex=%s\n", stu2[1].name, stu2[1].age, stu2[1].sex);

	//关闭文件
	fclose(fp1);
}

